console.log('\x1b[31m函数\x1b[0m');
function 平方(数值) {
    return 数值 * 数值;
}
console.log(平方(3.14));


console.log('\x1b[31m传递对象\x1b[0m');
function 函数(对象) {
    对象.生产 = '丰田';
}
const 我的车 = {
    生产: '本田',
    型号: 'Accord',
    年份: 1998,
};
console.log(我的车.生产);
函数(我的车);
console.log(我的车.生产);


console.log('\x1b[31m传递数组\x1b[0m');
function 数组函数(数组) {
    数组[0] = 30;
}
const 数组 = [45, 35];
console.log(数组[0]);
数组函数(数组);
console.log(数组[0]);


console.log('\x1b[31m函数表达式\x1b[0m');
const 平方2 = function (数值) {
    return 数值 * 数值;
};
console.log(平方2(4));


console.log('\x1b[31m带名称的函数表达式\x1b[0m');
const 阶乘函数 = function 阶乘(整数) {
    return 整数 < 2 ? 1 : 整数 * 阶乘(整数 - 1);
};
console.log(阶乘函数(3));


console.log('\x1b[31m传递函数\x1b[0m');
function 映射(函数, 数组) {
    let 结果 = new  Array(数组.length);
    for(let i = 0; i < 数组.length; i++) {
        结果[i] = 函数(数组[i]);
    }
    return 结果;
}
console.log(映射(平方, [1, 2, 3]));


console.log('\x1b[31m根据条件定义函数\x1b[0m');
let 我的函数;
let 数字 = 0;
if (数字 === 0) {
    我的函数 = function (对象) {
        对象.生产 = '吉利';
    };
};
let 对象 = {
    '生产': '奥迪',
}
console.log(我的函数);
console.log(对象);
